package com.sugon.modules.base.service;

import com.sugon.modules.base.model.dto.HandleApproveResult;
import com.sugon.modules.base.model.vo.BaseApproveParamVO;

/**
 * @author ： YuXD
 * @description： ERMS基础审核Service
 * <p>
 * 比如设备、备件审核业务处理类可以在继承接口的同时个性定制化实现
 * @date ： 2020-10-31 下午 12:02
 * @version: 1.0
 */
public interface IErmsBaseApproveManager {

    /**
     * 车间审批，一般指车间设备技术室主管进行审核
     *
     * @param approveParam 审核参数
     * @return
     */
    default boolean workshopApprove(BaseApproveParamVO approveParam) {
        // 什么都不错，实现类需要按照自己业务实现该方法
        return true;
    }

    /**
     * PE审核，一般指制造处设备技术室专员进行审核
     *
     * @param approveParam 审核参数
     * @return
     */
    default boolean peApprove(BaseApproveParamVO approveParam) {
        // 什么都不错，实现类需要按照自己业务实现该方法
        return true;
    }

    /**
     * PE审批，一般指车间设备技术室主管进行审批
     *
     * @param approveParam 审核参数
     * @return
     */
    default boolean pe2Approve(BaseApproveParamVO approveParam) {
        // 什么都不错，实现类需要按照自己业务实现该方法
        return true;
    }

    /**
     * 处理车间审批业务，一般有具体业务类提供实现
     *
     * @param approveItemId 审批事项ID
     * @param approveStatus 审批状态
     * @param remark        审批备注
     * @return
     */
    default HandleApproveResult handleWorkshopApprove(String approveItemId, Integer approveStatus, String remark){
        return null;
    }

    /**
     * 处理PE制造处审批业务，一般有具体业务类提供实现
     * 一般指由制造处设备技术室主管审批进行逻辑处理
     *
     * @param approveItemId 审批事项ID
     * @param approveStatus 审批状态
     * @param remark        审批备注
     * @return
     */
    default HandleApproveResult handlePEApprove(String approveItemId, Integer approveStatus, String remark) {
        return null;
    }

    /**
     * 处理PE制造处审批业务，一般有具体业务类提供实现
     * 一般指由制造处设备技术室主管审批进行逻辑处理
     * @param approveItemId 审批事项ID
     * @param approveStatus 审批状态
     * @param remark        审批备注
     * @return
     */
    default HandleApproveResult handlePE2Approve(String approveItemId, Integer approveStatus, String remark) {
        return null;
    }

}
